package de.dpunkt.myaktion.controller;

import java.io.Serializable;

import javax.enterprise.context.SessionScoped;
import javax.enterprise.event.Event;
import javax.inject.Inject;
import javax.inject.Named;

import de.dpunkt.myaktion.model.Aktion;
import de.dpunkt.myaktion.util.qualifier.Added;
import de.dpunkt.myaktion.util.qualifier.Updated;

@Named
@SessionScoped
public class AktionEditController implements Serializable {

	private static final long serialVersionUID = -6638274722642876150L;
	
	public enum Mode {
		EDIT, ADD
	};
	
	@Inject	@Added
	private Event<Aktion> aktionAddEventSrc;
	
	@Inject	@Updated
	private Event<Aktion> aktionUpdatedEventSrc;

	private Aktion aktion;
	private Mode mode;
	
	public Mode getMode() {
		return mode;
	}
	
	public Aktion getAktion() {
		return aktion;
	}
	
	public void addAktion() {
		mode = Mode.ADD;
		aktion = new Aktion();
	}
	
	public void editAktion(final Aktion aktion) {
		mode = Mode.EDIT;
		this.aktion = aktion;
	}
	
	public String doSave() {
		if (getMode() == Mode.ADD) {
			aktionAddEventSrc.fire(aktion);
		} else if (getMode() == Mode.EDIT) {
			aktionUpdatedEventSrc.fire(aktion);
		}
		return Pages.AKTION_LIST;
	}
	
	public String doCancel() {
		return Pages.AKTION_LIST;
	}
	
	public String getTitle() {
		return getMode() == Mode.EDIT ? "Aktion editieren" : "Neue Aktion anlegen";
	}
}
